// 
// @Auther: by wujehy
// @Email:wujehy@qq.com
// @Data:2021/2/17.
// @Time:下午1:55.
// 
//

#ifndef FLUTTER_FFI_SDK_CLIENT_H
#define FLUTTER_FFI_SDK_CLIENT_H

#include <string>
#include <map>
#include <memory>
#include <ThreadPool.h>




/**
 * @brief 用于测试的c++的项目
 */
class Client : public std::enable_shared_from_this<Client>
{
private:
    bool m_client_status = false;

    std::map<std::string, std::string> m_key_value_cache; ///< 用作内存缓存

    void (*debug_loggerfunc)(const char *) = nullptr;


public:
    ThreadPool threadPool;

    Client();

    /**
     * @brief 日志系统初始化 ,NOTE 上层日志系统 不要污染底层 日志系统, 所以要通过其他方式进行桥接
     */
    void init_logger(void (*debug_loggerfunc)(const char *));

    /*
     * @brief 只做 debug 的桥接
     */
    void logger_debug(const char *msg_log);

    bool isClientStatus() const;

    void setClientStatus(bool status);

    void setKey(const std::string &key, const std::string &value);

    void delKey(const std::string &key);

    int getKey(const std::string &key , std::string &get_value);

    virtual ~Client();
};


#endif //FLUTTER_FFI_SDK_CLIENT_H
